package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"learn/bootstrap"
	btconfig "learn/config"
	"learn/pkg/config"
)

func init() {
	btconfig.Initialize()
}

func main() {

	// gin sse 每个用户登录后 长连接 。有消息通知就给对应的用户发消息 用户 id
	// 有多个长连接？？？？？
	// 可以用 通道。。 发送消息的地方。只要往对应 的通道发消息，
	//
	//route := gin.Default()
	//
	//route.POST("/event-stream", func(c *gin.Context) {
	//	//
	//})

	// @title           Swagger Example API
	// @version         1.0
	// @description     This is a sample server celler server.
	// @termsOfService  http://swagger.io/terms/

	// @contact.name   API Support
	// @contact.url    http://www.swagger.io/support
	// @contact.email  support@swagger.io

	// @license.name  Apache 2.0
	// @license.url   http://www.apache.org/licenses/LICENSE-2.0.html

	// @host      localhost:8080
	// @BasePath  /api/v1

	// @securityDefinitions.basic  BasicAuth

	// @externalDocs.description  OpenAPI
	// @externalDocs.url          https://swagger.io/resources/open-api/

	var env string
	config.InitConfig(env)
	// 初始化 Gin 实例
	r := gin.New()
	bootstrap.SetupRoute(r)
	bootstrap.SetupLogger()
	bootstrap.SetupDB()
	bootstrap.SetupRedis()

	// 定时任务
	//bootstrap.CronStart()
	// 队列 必须有 redis
	//bootstrap.SetAsynq()

	//bootstrap.SetAsynqWork()

	gin.SetMode(gin.DebugMode)

	err := r.Run(":" + config.Get("app.port"))
	if err != nil {
		fmt.Println(err.Error())
	}

}
